iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
SideProject30

出遊不怕一個人系列 第 29

DAY29-會員中心(更新名稱與密碼)

  • 分享至 

  • xImage
  •  

頭貼搞定了那就剩下使用者姓名與密碼了!!

這個做法跟之前的方式一樣,updateProfile去更新會員的資料,有填寫才要更新,所以也有一個if判斷式在前面。

以下是今天寫的內容,使用方式不變,所以就不多加贅述了。

function Member(){
    const user = auth.currentUser
    const [displayName, setDisplayName] = useState("")
    const [password, setPassword] = useState("")
    const [photoURL,setPhotoURL] = useState(null)
    const [imageUpload, setImageUpload] = useState(null)
    const previewImg = imageUpload? URL.createObjectURL(imageUpload) : ""
    const [errorMessage, setErrorMessage] = useState(false)
    function onSubmit(){
        if(previewImg){
            const imagesRef = ref(storage, 'user-images/' + user.uid);
            const metadata = {
                contentType: imageUpload.type,
            };
            uploadBytes(imagesRef, imageUpload,metadata).then((snapshot) => {
                return getDownloadURL(snapshot.ref)
            }).then((url)=>{
                setPhotoURL(url)
            });
            updateProfile(user, {
                photoURL
            })
        }
        if(displayName){
            updateProfile(user, {
                displayName
            }).then(()=>{
                setDisplayName("")
            })
        }else{
             setErrorMessage("必填")
        }
        if(password){
            updateProfile(user, {
                password
            }).then(()=>{
                setPassword("")
            })
        }
    }
    return (
    <main data-page="-" className="memberPage">
        <section className="info_section">
            <div className="container">
                <div className="wrap animatable fadeInUp">
                    <div className="card">
                        <div className="card_upper">
                            <div className="imgwrap">
                                <img src={user.photoURL&&previewImg?previewImg:user.photoURL} alt=""/>
                            </div>
                            <div className="name">{user.displayName}</div>
                        </div>
                        <ul className="card_lower">
                            <li>
                                <div className="info_title">帳號</div>
                                <div className="info_conent">{user.email}</div>
                            </li>
                        </ul>
                        <div className="editbtnwrap">
                            <label className="btn_edit" htmlFor="upload" >上傳照片</label>
                            <input type="file" accept="image/*" id="upload" 
                                onChange={(e)=>setImageUpload(e.target.files[0])}
                            />
                        </div>
                    </div>
                    <form action="">
                        <div className="form-group">
                            <label className="form-label" htmlFor="name">使用者名稱<span>*</span></label>
                            <input className="form-input" id="name" type="text" placeholder="請輸入名稱" value={displayName} onChange={(e)=>{setDisplayName(e.target.value)}}/>
                            <small>{errorMessage}</small>
                        </div>
                        <div className="form-group">
                            <label className="form-label" htmlFor="password">修改密碼</label>
                            <input className="form-input" id="password" type="text" placeholder="請輸入密碼" value={password} onChange={(e)=>{setPassword(e.target.value)}}/>
                        </div>
                        <div className="btnwrap">
                            <a className="btn blue" href="#" onClick={onSubmit}>儲存變更 <span></span></a>
                        </div>
                    </form>

                </div>
            </div>
        </section>
    </main>
    )
}

今天是幸運的一天,沒有碰到錯誤!!


上一篇
DAY28-會員中心(會員頭貼上傳)
下一篇
DAY30-鐵人完結
系列文
出遊不怕一個人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言